Expert systems are computer programs that emulate reasoning tasks by applying the encoded knowledge of specialists or experts to facts about a problem provided by the end user. Typical expert systems use specialized formal structures such as "rules" or "frames" to encode the knowledge in a data structure called the knowledge base.
An expert system with an empty knowledge base is called an expert system shell. The part of the shell that applies the encoded knowledge to specific facts is called the inference engine. Because useful results can often be obtained by applying only some of the encoded knowledge, expert systems can often cope with missing or incomplete information. In addition, because the knowledge being used is explicitly encoded, expert systems can often provide useful explanations for their conclusions by presenting the knowledge used.
A serious limitation of existing expert systems arises from the means used to apply the formalized knowledge to facts about a particular case. The two standard approaches are goal-driven strategies and data-driven strategies. In a goal-driven system, an initial goal is defined, and the inference engine asks the end user a series of questions as it attempts to gather information that links the formalized knowledge to the goal. In a data-driven system, the end user states all the known facts at the outset, and the system matches these facts with the formalized knowledge to draw any and all derivable conclusions.
Goal-driven systems are widely used in expert systems for consultation. They have the advantage of simple and focused end-user interaction, since the system is in complete control over what is asked when. However, questioning sequences can be unacceptably lengthy, particularly for professional end users. Data-driven systems have the advantage of providing the end user much greater freedom. However, they are prone to be inefficient, wasting time deriving the consequences of irrelevant facts. In addition, if the end user omits important items, such systems often provide little or nothing in the way of prompting. While existing expert systems often support both of these strategies, they require the use of only one of them at a given time, accepting the consequent disadvantages as a necessary compromise.
Another limitation stems from the fact that knowledge bases are often incomplete. While explanations provided by the system allow the end user to understand why the system and the end user disagree about some conclusion, there is often no way for the end user to "change the system's mind" other than to modify the input facts in an attempt to get the desired results--a clearly undesirable practice.
Further, because it is frequently inconvenient or even impossible to encode all of the knowledge in a knowledge base in a declarative or nonprocedural form, most expert systems must provide "procedural escapes" that allow the knowledge engineer to augment the knowledge base with procedural programs written in a different host language. This is particularly common when numerical calculations are required that are inconvenient or impossible to express in the form of rules. Unless great care is taken, such procedures often introduce "side effects." Side effects make the conclusions sensitive to the sequence in which the facts were entered, and make it particularly hard to cope with missing information, to provide explanations, to allow the end user to change answers, or to save the facts for a case and be sure of obtaining the same results when these facts are reloaded.